package process

import (
	"Three/project01/chatroom/client/utils"
	"Three/project01/chatroom/common/message"
	"encoding/json"
	"fmt"
	"net"
	"os"
)

func ShowMenu() {
	fmt.Println("-------------恭喜XXX登录成功--------------")
	fmt.Println("-------------1,显示用户列表--------------")
	fmt.Println("-------------2,发送消息--------------")
	fmt.Println("-------------3,消息列表--------------")
	fmt.Println("-------------4,退出系统--------------")
	fmt.Println("请选择(1-4):")
	var key int
	var content string

	//因为我们总会使用到SmsProcess实例，因此我们将其定义在switch外部
	smsProcess := SmsProcess{}
	fmt.Scanf("%d\n", &key)
	switch key {
	case 1:
		//fmt.Println("显示用户列表")
		outputOnlineUser()
	case 2:
		fmt.Println("请输入你想对大家说的话:")
		fmt.Scanf("%s\n", &content)
		smsProcess.SendGroupMes(content)
	case 3:
		fmt.Println("-------------3,消息列表--------------")
	case 4:
		fmt.Println("-------------4,退出系统--------------")
		os.Exit(0)
	default:
		fmt.Println("你输入的选项不正确")

	}
}

func serverProcessMes(conn net.Conn) {
	//创建一个Transfer实例，不停的读取服务器发送的信息
	tf := &utils.Transfer{
		Conn: conn,
	}
	for {
		fmt.Println("客户端正在读取服务器发送的消息")
		mes, err := tf.ReadPkg()
		if err != nil {
			fmt.Println("tf.ReadPkg err=", err)
			return
		}
		//如果读取到消息，则进行下一步逻辑处理
		switch mes.Type {
		case message.NotifyUserStatusMesType: //有人上线了
			//1,取出NotifyUserStatusMes
			var notifyUserStatusMes message.NotifyUserStatusMes
			json.Unmarshal([]byte(mes.Data), &notifyUserStatusMes)
			//2,把这个用户的信息，状态保持的客户map中
			updateUserStatus(&notifyUserStatusMes)
		case message.SmsMesType: //有人群发消息了
			outputGroupMes(&mes)

		default:
			fmt.Println("服务器返回了未知的消息类型")
		}
		//fmt.Printf("mes=%v\n",mes)

	}
}
